// ----------------------------------------------------------------------------
// Copyright 2006, Martin D. Flynn
// All rights reserved
// ----------------------------------------------------------------------------
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// 
// http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// ----------------------------------------------------------------------------
// Description:
//  OpenDMTP protocol status code constants.
// ----------------------------------------------------------------------------
// Change History:
//  2006/03/26  Martin D. Flynn
//      Initial release
//  2006/03/31  Martin D. Flynn
//      Added new status codes:
//          STATUS_INITIALIZED
//          STATUS_WAYMARK
// ----------------------------------------------------------------------------
package org.opendmtp.j2me.codes;

/**
 * Contains OpenDMTP protocol status code constants. <br>
 * ---------------------------------------------------------------------------- <br>
 * Reserved status codes: [E0-00 through FF-FF] <br>
 * Groups: <br>
 * 0xF0.. - Generic <br>
 * 0xF1.. - Motion <br>
 * 0xF2.. - Geofence <br>
 * 0xF4.. - Digital input/output <br>
 * 0xF6.. - Sensor input <br>
 * 0xF7.. - Temperature input <br>
 * 0xF9.. - J1708 <br>
 * ---------------------------------------------------------------------------- <br>
 * Missing: <br>
 * Login/Logout <br>
 * Hook/Drop
 * 
 * @author Martin D. Flynn
 * @author Robert Puckett
 * 
 */
public interface StatusCodes {

  // ----------------------------------------------------------------------------
  // No status code: 0x0000

  /**
   * Contains a status code representing no status.
   */
  public static final int STATUS_NONE = 0x0000;

  // ----------------------------------------------------------------------------
  // Generic codes: 0xF000 to 0xF0FF

  /**
   * Contains a status code for the initialization function performed by the device. <br>
   * Notes: <br> - This contents of the payload must at least contain the current <br>
   * timestamp (and latitude and longitude if available).
   */
  public static final int STATUS_INITIALIZED = 0xF010;

  /**
   * Contains a status code for indicating that no more than just the location of the device at a
   * particular time. <br>
   * Notes: <br> - This contents of the payload must at least contain the current <br>
   * timestamp, latitude, and longitude.
   */
  public static final int STATUS_LOCATION = 0xF020;

  /**
   * Contains a status code for manual user intervention at the device. <br>
   * Notes: <br> - This contents of the payload must at least contain the current <br>
   * timestamp, latitude, and longitude.
   */
  public static final int STATUS_WAYMARK = 0xF030;

  // ----------------------------------------------------------------------------
  // Motion codes: 0xF100 to 0xF1FF

  /**
   * Contains a status code for a device start of motion. <br>
   * Notes: <br>
   * The definition of motion-start is provided by property PROP_MOTION_START
   */

  public static final int STATUS_MOTION_START = 0xF111;

  /**
   * Contains a status code for a device in-motion interval. <br>
   * Notes: <br>
   * The in-motion interval is provided by property PROP_MOTION_IN_MOTION
   */
  public static final int STATUS_MOTION_IN_MOTION = 0xF112;

  /**
   * Contains a status code for a device stopped motion. <br>
   * Notes: <br>
   * The definition of motion-stop is provided by property PROP_MOTION_STOP
   */
  public static final int STATUS_MOTION_STOP = 0xF113;

  /**
   * Contains a status code for a device dormant interval (ie. not moving). <br>
   * Notes: <br>
   * The dormant interval is provided by property PROP_MOTION_DORMANT
   */
  public static final int STATUS_MOTION_DORMANT = 0xF114;

  /**
   * Contains a status code for a device exceeding preset speed limit. <br>
   * Notes: <br>
   * The excess-speed threshold is provided by property PROP_MOTION_EXCESS_SPEED
   */
  public static final int STATUS_MOTION_EXCESS_SPEED = 0xF11A;

  /**
   * Contains a status code for odometer value #0. <br>
   * Notes: <br>
   * The odometer limit is provided by property PROP_ODOMETER_#_LIMIT
   */
  public static final int STATUS_ODOM_0 = 0xF130;
  /**
   * Contains a status code for odometer value #1. <br>
   * Notes: <br>
   * The odometer limit is provided by property PROP_ODOMETER_#_LIMIT
   */
  public static final int STATUS_ODOM_1 = 0xF131;
  /**
   * Contains a status code for odometer value #2. <br>
   * Notes: <br>
   * The odometer limit is provided by property PROP_ODOMETER_#_LIMIT
   */
  public static final int STATUS_ODOM_2 = 0xF132;
  /**
   * Contains a status code for odometer value #3. <br>
   * Notes: <br>
   * The odometer limit is provided by property PROP_ODOMETER_#_LIMIT
   */
  public static final int STATUS_ODOM_3 = 0xF133;
  /**
   * Contains a status code for odometer value #4. <br>
   * Notes: <br>
   * The odometer limit is provided by property PROP_ODOMETER_#_LIMIT
   */
  public static final int STATUS_ODOM_4 = 0xF134;
  /**
   * Contains a status code for odometer value #5. <br>
   * Notes: <br>
   * The odometer limit is provided by property PROP_ODOMETER_#_LIMIT
   */
  public static final int STATUS_ODOM_5 = 0xF135;
  /**
   * Contains a status code for odometer value #6. <br>
   * Notes: <br>
   * The odometer limit is provided by property PROP_ODOMETER_#_LIMIT
   */
  public static final int STATUS_ODOM_6 = 0xF136;
  /**
   * Contains a status code for odometer value #7. <br>
   * Notes: <br>
   * The odometer limit is provided by property PROP_ODOMETER_#_LIMIT
   */
  public static final int STATUS_ODOM_7 = 0xF137;

  /**
   * Contains a status code for when odometer #0 has exceeded a set limit. <br>
   * Notes: <br>
   * The odometer limit is provided by property PROP_ODOMETER_#_LIMIT
   */
  public static final int STATUS_ODOM_LIMIT_0 = 0xF140;
  /**
   * Contains a status code for when odometer #1 has exceeded a set limit. <br>
   * Notes: <br>
   * The odometer limit is provided by property PROP_ODOMETER_#_LIMIT
   */
  public static final int STATUS_ODOM_LIMIT_1 = 0xF141;
  /**
   * Contains a status code for when odometer #2 has exceeded a set limit. <br>
   * Notes: <br>
   * The odometer limit is provided by property PROP_ODOMETER_#_LIMIT
   */
  public static final int STATUS_ODOM_LIMIT_2 = 0xF142;
  /**
   * Contains a status code for when odometer #3 has exceeded a set limit. <br>
   * Notes: <br>
   * The odometer limit is provided by property PROP_ODOMETER_#_LIMIT
   */
  public static final int STATUS_ODOM_LIMIT_3 = 0xF143;
  /**
   * Contains a status code for when odometer #4 has exceeded a set limit. <br>
   * Notes: <br>
   * The odometer limit is provided by property PROP_ODOMETER_#_LIMIT
   */
  public static final int STATUS_ODOM_LIMIT_4 = 0xF144;
  /**
   * Contains a status code for when odometer #5 has exceeded a set limit. <br>
   * Notes: <br>
   * The odometer limit is provided by property PROP_ODOMETER_#_LIMIT
   */
  public static final int STATUS_ODOM_LIMIT_5 = 0xF145;
  /**
   * Contains a status code for when odometer #6 has exceeded a set limit. <br>
   * Notes: <br>
   * The odometer limit is provided by property PROP_ODOMETER_#_LIMIT
   */
  public static final int STATUS_ODOM_LIMIT_6 = 0xF146;
  /**
   * Contains a status code for when odometer #7 has exceeded a set limit. <br>
   * Notes: <br>
   * The odometer limit is provided by property PROP_ODOMETER_#_LIMIT
   */
  public static final int STATUS_ODOM_LIMIT_7 = 0xF147;
  // ----------------------------------------------------------------------------
  // Geofence: 0xF200 to 0xF2FF

  /**
   * Contains a status code for when a device arrives at a geofence. <br>
   * Notes: <br> - Client may wish to include FIELD_GEOFENCE_ID in the event packet.
   */

  public static final int STATUS_GEOFENCE_ARRIVE = 0xF210;

  /**
   * Contains a status code for when a device departs a geofence. <br>
   * Notes: <br> - Client may wish to include FIELD_GEOFENCE_ID in the event packet.
   */
  public static final int STATUS_GEOFENCE_DEPART = 0xF230;

  /**
   * Contains a status code for when a geofence violation occurs. <br>
   * Notes: <br> - Client may wish to include FIELD_GEOFENCE_ID in the event packet.
   */
  public static final int STATUS_GEOFENCE_VIOLATION = 0xF250;

  /**
   * Contains a status code for when a geofence becomes active. <br>
   * Notes: <br> - Client may wish to include FIELD_GEOFENCE_ID in the event packet.
   */
  public static final int STATUS_GEOFENCE_ACTIVE = 0xF270;

  /**
   * Contains a status code for when a geofence becomes inactive. <br>
   * Notes: <br> - Client may wish to include FIELD_GEOFENCE_ID in the event packet.
   */
  public static final int STATUS_GEOFENCE_INACTIVE = 0xF280;

  // ----------------------------------------------------------------------------
  // Digital input/output (state change): 0xF400 to 0xF4FF

  /**
   * Contains a status code for when a current input is in the ON state (bitmask). <br>
   * Notes: <br> - Client should include FIELD_INPUT_STATE in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_INPUT_STATE = 0xF400;

  /**
   * Contains a status code for when an input turned ON. <br>
   * Notes: <br> - Client should include FIELD_INPUT_ID in the event packet, <br>
   * otherwise this status code would have no meaning. <br> - This status code may be used to
   * indicate that an arbitrary input <br>
   * 'thing' turned ON, and the 'thing' can be identified by the 'Input ID'. <br>
   * This 'ID' can also represent the index of a digital input.
   */
  public static final int STATUS_INPUT_ON = 0xF402;

  /**
   * Contains a status code for when an input turned OFF. <br>
   * Notes: <br> - Client should include FIELD_INPUT_ID in the event packet, <br>
   * otherwise this status code would have no meaning. <br> - This status code may be used to
   * indicate that an arbitrary input <br>
   * 'thing' turned OFF, and the 'thing' can be identified by the 'Input ID'. <br>
   * This 'ID' can also represent the index of a digital input.
   */
  public static final int STATUS_INPUT_OFF = 0xF404;

  /**
   * Contains a status code for when a current output is in the ON state (bitmask). <br>
   * Notes: <br> - Client should include FIELD_OUTPUT_STATE in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_OUTPUT_STATE = 0xF406;

  /**
   * Contains a status code for when an output turned ON. <br>
   * Notes: <br> - Client should include FIELD_OUTPUT_ID in the event packet, <br>
   * otherwise this status code would have no meaning. <br> - This status code may be used to
   * indicate that an arbitrary output <br>
   * 'thing' turned ON, and the 'thing' can be identified by the 'Output ID'. <br>
   * This 'ID' can also represent the index of a digital output.
   */
  public static final int STATUS_OUTPUT_ON = 0xF408;

  /**
   * Contains a status code for when an output turned OFF. <br>
   * Notes: <br> - Client should include FIELD_OUTPUT_ID in the event packet, <br>
   * otherwise this status code would have no meaning. <br> - This status code may be used to
   * indicate that an arbitrary output <br>
   * 'thing' turned OFF, and the 'thing' can be identified by the 'Output ID'. <br>
   * This 'ID' can also represent the index of a digital output.
   */
  public static final int STATUS_OUTPUT_OFF = 0xF40A;

  /**
   * Contains a status code for when the digital input #0 state changed to ON.
   */
  public static final int STATUS_INPUT_ON_00 = 0xF420;
  /**
   * Contains a status code for when the digital input #1 state changed to ON.
   */
  public static final int STATUS_INPUT_ON_01 = 0xF421;
  /**
   * Contains a status code for when the digital input #2 state changed to ON.
   */
  public static final int STATUS_INPUT_ON_02 = 0xF422;
  /**
   * Contains a status code for when the digital input #3 state changed to ON.
   */
  public static final int STATUS_INPUT_ON_03 = 0xF423;
  /**
   * Contains a status code for when the digital input #4 state changed to ON.
   */
  public static final int STATUS_INPUT_ON_04 = 0xF424;
  /**
   * Contains a status code for when the digital input #5 state changed to ON.
   */
  public static final int STATUS_INPUT_ON_05 = 0xF425;
  /**
   * Contains a status code for when the digital input #6 state changed to ON.
   */
  public static final int STATUS_INPUT_ON_06 = 0xF426;
  /**
   * Contains a status code for when the digital input #7 state changed to ON.
   */
  public static final int STATUS_INPUT_ON_07 = 0xF427;

  /**
   * Contains a status code for when the digital input #0 state changed to OFF.
   */
  public static final int STATUS_INPUT_OFF_00 = 0xF440;
  /**
   * Contains a status code for when the digital input #1 state changed to OFF.
   */
  public static final int STATUS_INPUT_OFF_01 = 0xF441;
  /**
   * Contains a status code for when the digital input #2 state changed to OFF.
   */
  public static final int STATUS_INPUT_OFF_02 = 0xF442;
  /**
   * Contains a status code for when the digital input #3 state changed to OFF.
   */
  public static final int STATUS_INPUT_OFF_03 = 0xF443;
  /**
   * Contains a status code for when the digital input #4 state changed to OFF.
   */
  public static final int STATUS_INPUT_OFF_04 = 0xF444;
  /**
   * Contains a status code for when the digital input #5 state changed to OFF.
   */
  public static final int STATUS_INPUT_OFF_05 = 0xF445;
  /**
   * Contains a status code for when the digital input #6 state changed to OFF.
   */
  public static final int STATUS_INPUT_OFF_06 = 0xF446;
  /**
   * Contains a status code for when the digital input #7 state changed to OFF.
   */
  public static final int STATUS_INPUT_OFF_07 = 0xF447;

  /**
   * Contains a status code for when the digital output #0 state set to ON.
   */
  public static final int STATUS_OUTPUT_ON_00 = 0xF460;
  /**
   * Contains a status code for when the digital output #1 state set to ON.
   */
  public static final int STATUS_OUTPUT_ON_01 = 0xF461;
  /**
   * Contains a status code for when the digital output #2 state set to ON.
   */
  public static final int STATUS_OUTPUT_ON_02 = 0xF462;
  /**
   * Contains a status code for when the digital output #3 state set to ON.
   */
  public static final int STATUS_OUTPUT_ON_03 = 0xF463;
  /**
   * Contains a status code for when the digital output #4 state set to ON.
   */
  public static final int STATUS_OUTPUT_ON_04 = 0xF464;
  /**
   * Contains a status code for when the digital output #5 state set to ON.
   */
  public static final int STATUS_OUTPUT_ON_05 = 0xF465;
  /**
   * Contains a status code for when the digital output #6 state set to ON.
   */
  public static final int STATUS_OUTPUT_ON_06 = 0xF466;
  /**
   * Contains a status code for when the digital output #7 state set to ON.
   */
  public static final int STATUS_OUTPUT_ON_07 = 0xF467;

  /**
   * Contains a status code for when the digital output #0 state set to OFF.
   */
  public static final int STATUS_OUTPUT_OFF_00 = 0xF480;
  /**
   * Contains a status code for when the digital output #1 state set to OFF.
   */
  public static final int STATUS_OUTPUT_OFF_01 = 0xF481;
  /**
   * Contains a status code for when the digital output #2 state set to OFF.
   */
  public static final int STATUS_OUTPUT_OFF_02 = 0xF482;
  /**
   * Contains a status code for when the digital output #3 state set to OFF.
   */
  public static final int STATUS_OUTPUT_OFF_03 = 0xF483;
  /**
   * Contains a status code for when the digital output #4 state set to OFF.
   */
  public static final int STATUS_OUTPUT_OFF_04 = 0xF484;
  /**
   * Contains a status code for when the digital output #5 state set to OFF.
   */
  public static final int STATUS_OUTPUT_OFF_05 = 0xF485;
  /**
   * Contains a status code for when the digital output #6 state set to OFF.
   */
  public static final int STATUS_OUTPUT_OFF_06 = 0xF486;
  /**
   * Contains a status code for when the digital output #7 state set to OFF.
   */
  public static final int STATUS_OUTPUT_OFF_07 = 0xF487;

  /**
   * Contains a status code for elapsed time #0. <br>
   * Notes: <br> - Client should include FIELD_ELAPSED_TIME in the event packet, <br>
   * otherwise this status code would have no meaning.
   */

  public static final int STATUS_ELAPSED_00 = 0xF4A0;
  /**
   * Contains a status code for elapsed time #1. <br>
   * Notes: <br> - Client should include FIELD_ELAPSED_TIME in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_ELAPSED_01 = 0xF4A1;
  /**
   * Contains a status code for elapsed time #2. <br>
   * Notes: <br> - Client should include FIELD_ELAPSED_TIME in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_ELAPSED_02 = 0xF4A2;

  /**
   * Contains a status code for elapsed time #3. <br>
   * Notes: <br> - Client should include FIELD_ELAPSED_TIME in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_ELAPSED_03 = 0xF4A3;
  /**
   * Contains a status code for elapsed time #4. <br>
   * Notes: <br> - Client should include FIELD_ELAPSED_TIME in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_ELAPSED_04 = 0xF4A4;
  /**
   * Contains a status code for elapsed time #5. <br>
   * Notes: <br> - Client should include FIELD_ELAPSED_TIME in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_ELAPSED_05 = 0xF4A5;
  /**
   * Contains a status code for elapsed time #6. <br>
   * Notes: <br> - Client should include FIELD_ELAPSED_TIME in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_ELAPSED_06 = 0xF4A6;
  /**
   * Contains a status code for elapsed time #7. <br>
   * Notes: <br> - Client should include FIELD_ELAPSED_TIME in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_ELAPSED_07 = 0xF4A7;

  /**
   * Contains a status code for when the elapsed timer #0 has exceeded a set limit. <br>
   * Notes: <br> - Client should include FIELD_ELAPSED_TIME in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_ELAPSED_LIMIT_00 = 0xF4B0;
  /**
   * Contains a status code for when the elapsed timer #1 has exceeded a set limit. <br>
   * Notes: <br> - Client should include FIELD_ELAPSED_TIME in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_ELAPSED_LIMIT_01 = 0xF4B1;
  /**
   * Contains a status code for when the elapsed timer #2 has exceeded a set limit. <br>
   * Notes: <br> - Client should include FIELD_ELAPSED_TIME in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_ELAPSED_LIMIT_02 = 0xF4B2;
  /**
   * Contains a status code for when the elapsed timer #3 has exceeded a set limit. <br>
   * Notes: <br> - Client should include FIELD_ELAPSED_TIME in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_ELAPSED_LIMIT_03 = 0xF4B3;
  /**
   * Contains a status code for when the elapsed timer #4 has exceeded a set limit. <br>
   * Notes: <br> - Client should include FIELD_ELAPSED_TIME in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_ELAPSED_LIMIT_04 = 0xF4B4;
  /**
   * Contains a status code for when the elapsed timer #5 has exceeded a set limit. <br>
   * Notes: <br> - Client should include FIELD_ELAPSED_TIME in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_ELAPSED_LIMIT_05 = 0xF4B5;
  /**
   * Contains a status code for when the elapsed timer #6 has exceeded a set limit. <br>
   * Notes: <br> - Client should include FIELD_ELAPSED_TIME in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_ELAPSED_LIMIT_06 = 0xF4B6;
  /**
   * Contains a status code for when the elapsed timer #7 has exceeded a set limit. <br>
   * Notes: <br> - Client should include FIELD_ELAPSED_TIME in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_ELAPSED_LIMIT_07 = 0xF4B7;

  // ----------------------------------------------------------------------------
  // Analog/etc sensor values (extra data): 0xF600 to 0xF6FF

  /**
   * Contains a status code for the 32-bit unsigned sensor #0 value . <br>
   * Notes: <br> - Client should include FIELD_SENSOR32 in the event packet, <br>
   * otherwise this status code would have no meaning. <br> - The server must be able to convert
   * this 32-bit value to something <br>
   * meaningful to the user. This can be done using the following formula: <br>
   * Actual_Value = ((double)Sensor32_Value * <i>Gain</i>) + <i>Offset</i>; <br>
   * Where <i>Gain</i> & <i>Offset</i> are user configurable values provided at setup. <br>
   * For instance: Assume Sensor32-0 contains a temperature value that can <br>
   * have a range of -40.0C to +125.0C. The client would encode -14.7C <br>
   * by adding 40.0 and multiplying by 10.0. The resulting value would be <br>
   * 253. The server would then be configured to know how to convert this <br>
   * value back into the proper temperature using the above formula by <br>
   * substituting 0.1 for <i>Gain</i>, and -40.0 for <i>Offset</i>: eg. <br>
   * -14.7 = ((double)253 * 0.1) + (-40.0);
   */
  public static final int STATUS_SENSOR32_0 = 0xF600;
  /**
   * Contains a status code for the 32-bit unsigned sensor #1 value . <br>
   * Notes: <br> - Client should include FIELD_SENSOR32 in the event packet, <br>
   * otherwise this status code would have no meaning. <br> - The server must be able to convert
   * this 32-bit value to something <br>
   * meaningful to the user. This can be done using the following formula: <br>
   * Actual_Value = ((double)Sensor32_Value * <i>Gain</i>) + <i>Offset</i>; <br>
   * Where <i>Gain</i> & <i>Offset</i> are user configurable values provided at setup. <br>
   * For instance: Assume Sensor32-0 contains a temperature value that can <br>
   * have a range of -40.0C to +125.0C. The client would encode -14.7C <br>
   * by adding 40.0 and multiplying by 10.0. The resulting value would be <br>
   * 253. The server would then be configured to know how to convert this <br>
   * value back into the proper temperature using the above formula by <br>
   * substituting 0.1 for <i>Gain</i>, and -40.0 for <i>Offset</i>: eg. <br>
   * -14.7 = ((double)253 * 0.1) + (-40.0);
   */
  public static final int STATUS_SENSOR32_1 = 0xF601;
  /**
   * Contains a status code for the 32-bit unsigned sensor #2 value . <br>
   * Notes: <br> - Client should include FIELD_SENSOR32 in the event packet, <br>
   * otherwise this status code would have no meaning. <br> - The server must be able to convert
   * this 32-bit value to something <br>
   * meaningful to the user. This can be done using the following formula: <br>
   * Actual_Value = ((double)Sensor32_Value * <i>Gain</i>) + <i>Offset</i>; <br>
   * Where <i>Gain</i> & <i>Offset</i> are user configurable values provided at setup. <br>
   * For instance: Assume Sensor32-0 contains a temperature value that can <br>
   * have a range of -40.0C to +125.0C. The client would encode -14.7C <br>
   * by adding 40.0 and multiplying by 10.0. The resulting value would be <br>
   * 253. The server would then be configured to know how to convert this <br>
   * value back into the proper temperature using the above formula by <br>
   * substituting 0.1 for <i>Gain</i>, and -40.0 for <i>Offset</i>: eg. <br>
   * -14.7 = ((double)253 * 0.1) + (-40.0);
   */
  public static final int STATUS_SENSOR32_2 = 0xF602;
  /**
   * Contains a status code for the 32-bit unsigned sensor #3 value . <br>
   * Notes: <br> - Client should include FIELD_SENSOR32 in the event packet, <br>
   * otherwise this status code would have no meaning. <br> - The server must be able to convert
   * this 32-bit value to something <br>
   * meaningful to the user. This can be done using the following formula: <br>
   * Actual_Value = ((double)Sensor32_Value * <i>Gain</i>) + <i>Offset</i>; <br>
   * Where <i>Gain</i> & <i>Offset</i> are user configurable values provided at setup. <br>
   * For instance: Assume Sensor32-0 contains a temperature value that can <br>
   * have a range of -40.0C to +125.0C. The client would encode -14.7C <br>
   * by adding 40.0 and multiplying by 10.0. The resulting value would be <br>
   * 253. The server would then be configured to know how to convert this <br>
   * value back into the proper temperature using the above formula by <br>
   * substituting 0.1 for <i>Gain</i>, and -40.0 for <i>Offset</i>: eg. <br>
   * -14.7 = ((double)253 * 0.1) + (-40.0);
   */
  public static final int STATUS_SENSOR32_3 = 0xF603;
  /**
   * Contains a status code for the 32-bit unsigned sensor #4 value . <br>
   * Notes: <br> - Client should include FIELD_SENSOR32 in the event packet, <br>
   * otherwise this status code would have no meaning. <br> - The server must be able to convert
   * this 32-bit value to something <br>
   * meaningful to the user. This can be done using the following formula: <br>
   * Actual_Value = ((double)Sensor32_Value * <i>Gain</i>) + <i>Offset</i>; <br>
   * Where <i>Gain</i> & <i>Offset</i> are user configurable values provided at setup. <br>
   * For instance: Assume Sensor32-0 contains a temperature value that can <br>
   * have a range of -40.0C to +125.0C. The client would encode -14.7C <br>
   * by adding 40.0 and multiplying by 10.0. The resulting value would be <br>
   * 253. The server would then be configured to know how to convert this <br>
   * value back into the proper temperature using the above formula by <br>
   * substituting 0.1 for <i>Gain</i>, and -40.0 for <i>Offset</i>: eg. <br>
   * -14.7 = ((double)253 * 0.1) + (-40.0);
   */
  public static final int STATUS_SENSOR32_4 = 0xF604;
  /**
   * Contains a status code for the 32-bit unsigned sensor #5 value . <br>
   * Notes: <br> - Client should include FIELD_SENSOR32 in the event packet, <br>
   * otherwise this status code would have no meaning. <br> - The server must be able to convert
   * this 32-bit value to something <br>
   * meaningful to the user. This can be done using the following formula: <br>
   * Actual_Value = ((double)Sensor32_Value * <i>Gain</i>) + <i>Offset</i>; <br>
   * Where <i>Gain</i> & <i>Offset</i> are user configurable values provided at setup. <br>
   * For instance: Assume Sensor32-0 contains a temperature value that can <br>
   * have a range of -40.0C to +125.0C. The client would encode -14.7C <br>
   * by adding 40.0 and multiplying by 10.0. The resulting value would be <br>
   * 253. The server would then be configured to know how to convert this <br>
   * value back into the proper temperature using the above formula by <br>
   * substituting 0.1 for <i>Gain</i>, and -40.0 for <i>Offset</i>: eg. <br>
   * -14.7 = ((double)253 * 0.1) + (-40.0);
   */
  public static final int STATUS_SENSOR32_5 = 0xF605;
  /**
   * Contains a status code for the 32-bit unsigned sensor #6 value . <br>
   * Notes: <br> - Client should include FIELD_SENSOR32 in the event packet, <br>
   * otherwise this status code would have no meaning. <br> - The server must be able to convert
   * this 32-bit value to something <br>
   * meaningful to the user. This can be done using the following formula: <br>
   * Actual_Value = ((double)Sensor32_Value * <i>Gain</i>) + <i>Offset</i>; <br>
   * Where <i>Gain</i> & <i>Offset</i> are user configurable values provided at setup. <br>
   * For instance: Assume Sensor32-0 contains a temperature value that can <br>
   * have a range of -40.0C to +125.0C. The client would encode -14.7C <br>
   * by adding 40.0 and multiplying by 10.0. The resulting value would be <br>
   * 253. The server would then be configured to know how to convert this <br>
   * value back into the proper temperature using the above formula by <br>
   * substituting 0.1 for <i>Gain</i>, and -40.0 for <i>Offset</i>: eg. <br>
   * -14.7 = ((double)253 * 0.1) + (-40.0);
   */
  public static final int STATUS_SENSOR32_6 = 0xF606;
  /**
   * Contains a status code for the 32-bit unsigned sensor #7 value . <br>
   * Notes: <br> - Client should include FIELD_SENSOR32 in the event packet, <br>
   * otherwise this status code would have no meaning. <br> - The server must be able to convert
   * this 32-bit value to something <br>
   * meaningful to the user. This can be done using the following formula: <br>
   * Actual_Value = ((double)Sensor32_Value * <i>Gain</i>) + <i>Offset</i>; <br>
   * Where <i>Gain</i> & <i>Offset</i> are user configurable values provided at setup. <br>
   * For instance: Assume Sensor32-0 contains a temperature value that can <br>
   * have a range of -40.0C to +125.0C. The client would encode -14.7C <br>
   * by adding 40.0 and multiplying by 10.0. The resulting value would be <br>
   * 253. The server would then be configured to know how to convert this <br>
   * value back into the proper temperature using the above formula by <br>
   * substituting 0.1 for <i>Gain</i>, and -40.0 for <i>Offset</i>: eg. <br>
   * -14.7 = ((double)253 * 0.1) + (-40.0);
   */
  public static final int STATUS_SENSOR32_7 = 0xF607;

  /**
   * Contains a status code for the 32-bit unsigned sensor #0 value out-of-range violation. <br>
   * Notes: <br> - Client should include FIELD_SENSOR32 in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_SENSOR32_RANGE_0 = 0xF620;
  /**
   * Contains a status code for the 32-bit unsigned sensor #1 value out-of-range violation. <br>
   * Notes: <br> - Client should include FIELD_SENSOR32 in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_SENSOR32_RANGE_1 = 0xF621;
  /**
   * Contains a status code for the 32-bit unsigned sensor #2 value out-of-range violation. <br>
   * Notes: <br> - Client should include FIELD_SENSOR32 in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_SENSOR32_RANGE_2 = 0xF622;
  /**
   * Contains a status code for the 32-bit unsigned sensor #3 value out-of-range violation. <br>
   * Notes: <br> - Client should include FIELD_SENSOR32 in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_SENSOR32_RANGE_3 = 0xF623;
  /**
   * Contains a status code for the 32-bit unsigned sensor #4 value out-of-range violation. <br>
   * Notes: <br> - Client should include FIELD_SENSOR32 in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_SENSOR32_RANGE_4 = 0xF624;
  /**
   * Contains a status code for the 32-bit unsigned sensor #5 value out-of-range violation. <br>
   * Notes: <br> - Client should include FIELD_SENSOR32 in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_SENSOR32_RANGE_5 = 0xF625;
  /**
   * Contains a status code for the 32-bit unsigned sensor #6 value out-of-range violation. <br>
   * Notes: <br> - Client should include FIELD_SENSOR32 in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_SENSOR32_RANGE_6 = 0xF626;
  /**
   * Contains a status code for the 32-bit unsigned sensor #7 value out-of-range violation. <br>
   * Notes: <br> - Client should include FIELD_SENSOR32 in the event packet, <br>
   * otherwise this status code would have no meaning.
   */
  public static final int STATUS_SENSOR32_RANGE_7 = 0xF627;

  // ----------------------------------------------------------------------------
  // Temperature sensor values (extra data): 0xF700 to 0xF7FF

  /**
   * Contains a status code for temperature value #0. <br>
   * Notes: <br> - Client should include at least the field FIELD_TEMP_AVER in the <br>
   * event packet, and may also wish to include FIELD_TEMP_LOW and <br>
   * FIELD_TEMP_HIGH.
   */
  public static final int STATUS_TEMPERATURE_0 = 0xF710;
  /**
   * Contains a status code for temperature value #1. <br>
   * Notes: <br> - Client should include at least the field FIELD_TEMP_AVER in the <br>
   * event packet, and may also wish to include FIELD_TEMP_LOW and <br>
   * FIELD_TEMP_HIGH.
   */
  public static final int STATUS_TEMPERATURE_1 = 0xF711;
  /**
   * Contains a status code for temperature value #2. <br>
   * Notes: <br> - Client should include at least the field FIELD_TEMP_AVER in the <br>
   * event packet, and may also wish to include FIELD_TEMP_LOW and <br>
   * FIELD_TEMP_HIGH.
   */
  public static final int STATUS_TEMPERATURE_2 = 0xF712;
  /**
   * Contains a status code for temperature value #3. <br>
   * Notes: <br> - Client should include at least the field FIELD_TEMP_AVER in the <br>
   * event packet, and may also wish to include FIELD_TEMP_LOW and <br>
   * FIELD_TEMP_HIGH.
   */
  public static final int STATUS_TEMPERATURE_3 = 0xF713;
  /**
   * Contains a status code for temperature value #4. <br>
   * Notes: <br> - Client should include at least the field FIELD_TEMP_AVER in the <br>
   * event packet, and may also wish to include FIELD_TEMP_LOW and <br>
   * FIELD_TEMP_HIGH.
   */
  public static final int STATUS_TEMPERATURE_4 = 0xF714;
  /**
   * Contains a status code for temperature value #5. <br>
   * Notes: <br> - Client should include at least the field FIELD_TEMP_AVER in the <br>
   * event packet, and may also wish to include FIELD_TEMP_LOW and <br>
   * FIELD_TEMP_HIGH.
   */
  public static final int STATUS_TEMPERATURE_5 = 0xF715;
  /**
   * Contains a status code for temperature value #6. <br>
   * Notes: <br> - Client should include at least the field FIELD_TEMP_AVER in the <br>
   * event packet, and may also wish to include FIELD_TEMP_LOW and <br>
   * FIELD_TEMP_HIGH.
   */
  public static final int STATUS_TEMPERATURE_6 = 0xF716;
  /**
   * Contains a status code for temperature value #7. <br>
   * Notes: <br> - Client should include at least the field FIELD_TEMP_AVER in the <br>
   * event packet, and may also wish to include FIELD_TEMP_LOW and <br>
   * FIELD_TEMP_HIGH.
   */
  public static final int STATUS_TEMPERATURE_7 = 0xF717;

  /**
   * Contains a status code for when temperature value #0 is out-of-range [low/high/average]. <br>
   * Notes: <br> - Client should include at least one of the fields FIELD_TEMP_AVER, <br>
   * FIELD_TEMP_LOW, or FIELD_TEMP_HIGH.
   */
  public static final int STATUS_TEMPERATURE_RANGE_0 = 0xF730;
  /**
   * Contains a status code for when temperature value #1 is out-of-range [low/high/average]. <br>
   * Notes: <br> - Client should include at least one of the fields FIELD_TEMP_AVER, <br>
   * FIELD_TEMP_LOW, or FIELD_TEMP_HIGH.
   */
  public static final int STATUS_TEMPERATURE_RANGE_1 = 0xF731;
  /**
   * Contains a status code for when temperature value #2 is out-of-range [low/high/average]. <br>
   * Notes: <br> - Client should include at least one of the fields FIELD_TEMP_AVER, <br>
   * FIELD_TEMP_LOW, or FIELD_TEMP_HIGH.
   */
  public static final int STATUS_TEMPERATURE_RANGE_2 = 0xF732;
  /**
   * Contains a status code for when temperature value #3 is out-of-range [low/high/average]. <br>
   * Notes: <br> - Client should include at least one of the fields FIELD_TEMP_AVER, <br>
   * FIELD_TEMP_LOW, or FIELD_TEMP_HIGH.
   */
  public static final int STATUS_TEMPERATURE_RANGE_3 = 0xF733;
  /**
   * Contains a status code for when temperature value #4 is out-of-range [low/high/average]. <br>
   * Notes: <br> - Client should include at least one of the fields FIELD_TEMP_AVER, <br>
   * FIELD_TEMP_LOW, or FIELD_TEMP_HIGH.
   */
  public static final int STATUS_TEMPERATURE_RANGE_4 = 0xF734;
  /**
   * Contains a status code for when temperature value #5 is out-of-range [low/high/average]. <br>
   * Notes: <br> - Client should include at least one of the fields FIELD_TEMP_AVER, <br>
   * FIELD_TEMP_LOW, or FIELD_TEMP_HIGH.
   */
  public static final int STATUS_TEMPERATURE_RANGE_5 = 0xF735;
  /**
   * Contains a status code for when temperature value #6 is out-of-range [low/high/average]. <br>
   * Notes: <br> - Client should include at least one of the fields FIELD_TEMP_AVER, <br>
   * FIELD_TEMP_LOW, or FIELD_TEMP_HIGH.
   */

  public static final int STATUS_TEMPERATURE_RANGE_6 = 0xF736;
  /**
   * Contains a status code for when temperature value #7 is out-of-range [low/high/average]. <br>
   * Notes: <br> - Client should include at least one of the fields FIELD_TEMP_AVER, <br>
   * FIELD_TEMP_LOW, or FIELD_TEMP_HIGH.
   */
  public static final int STATUS_TEMPERATURE_RANGE_7 = 0xF737;

  /**
   * Contains a status code for an averages of all temperatures [aver/aver/aver/...].
   */
  public static final int STATUS_TEMPERATURE = 0xF7F1;

  // ----------------------------------------------------------------------------
  // Miscellaneous
  /**
   * Contains a miscellaneous status code representing Generic 'login'.
   */
  public static final int STATUS_LOGIN = 0xF811;

  /**
   * Contains a miscellaneous status code representing Generic 'logout'.
   */
  public static final int STATUS_LOGOUT = 0xF812;

  /**
   * Contains a miscellaneous status code representing Connect/Hook/On.
   */
  public static final int STATUS_CONNECT = 0xF821;

  /**
   * Contains a miscellaneous status code representing Disconnect/Drop/Off.
   */
  public static final int STATUS_DISCONNECT = 0xF822;

  /**
   * Contains a miscellaneous status code representing Acknowledge.
   */
  public static final int STATUS_ACK = 0xF831;

  /**
   * Contains a miscellaneous status code representing Negative Acknowledge.
   */
  public static final int STATUS_NAK = 0xF832;

  // ----------------------------------------------------------------------------

}
